import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

public class Date {
//    利用编译器功能生成构造方法
    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
        this.printDate();
    }


    public Date() {
        this(1998,5,15);
//      this的使用 1.this.属性->访问当前对象的属性 2.this.()->调用当前对象的构造方法
//      （1）.必须放到构造方法里面（2）.必须在当前构造方法第一行（3）.不能形成环调用
//        3.this.fun();->调用当前对象的成员方法
    }

    //    构造方法
    //    名字与类名相同，无返回值，可重载
    /*public Date(){
        this.year = 1992;
        this.month = 9;
        this.day = 9;
        System.out.println("不带参数的构造方法。");
    }
    public Date(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }*/
//    两个构造方法造成方法的重载


    public int year;
    public int month;
    public int day;

    /*public void setDate(int y,int m,int d){
        year = y;
        month = m;
        day = d;*/
//    若形参名与实参名相同
//    此时变量位局部变量不是成员变量
//    若加上this <代表当前对象的引用>    this:只能在成员方法中使用
    public void  setDate(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void printDate(){
        System.out.println(this.year+" "+this.month+" "+this.day);
    }

    public static void main(String[] args) {
        Date date = new Date();
    }

    public static void main1(String[] args) {
        /*Date date1 = new Date();
        date1.setDate(2020,5,15);
        date1.printDate();
        Date date2 = new Date();
        date2.setDate(2021,5,15);
        date2.printDate();
        Date date3 = new Date();
        date3.setDate(2022,5,15);
        date3.printDate();*/

        Date date = new Date();
//        在实例化的时候就调用了一个不带参数的构造方法，当我们没有写的时候编译器默认提供的
//        若你有写别的构造方法那么编译器就不会提供一个默认的不带参数的构造方法
//        实例化对象分两步1.为对象分配内存 2.调用合适的构造方法
        date.printDate();
        System.out.println("===========");
        Date date1 = new Date(1998,9,6);
        date1.printDate();
     }
}
